/*
 * 
 * Libman
 * 
 * Daniel Kaufmann, Martin Lang, Simon Moosbrugger,
 * Stefan Mayer, Stephan Halbeisen
 * 
 */
package application.server;

import java.rmi.Remote;
import java.rmi.RemoteException;

import application.exceptions.DataInconsistentException;
import application.exceptions.DatabaseException;
import application.exceptions.ExemplarNotFoundException;
import application.exceptions.ExtendNotAllowedException;
import application.exceptions.LoanExtendNotPossibleException;
import application.exceptions.LoanNotFoundException;
import application.exceptions.NotLoanedException;

/**
 * The Interface LoanExtendRemote.
 */
public interface LoanExtendRemote extends Remote {

	/**
	 * Extend.
	 * 
	 * @param exemplarID
	 *            the exemplar id
	 * @throws RemoteException
	 *             the remote exception
	 * @throws LoanExtendNotPossibleException
	 *             the loan extend not possible exception
	 * @throws DatabaseException
	 *             the database exception
	 * @throws LoanNotFoundException
	 *             the loan not found exception
	 * @throws ExtendNotAllowedException
	 *             the extend not allowed exception
	 * @throws ExemplarNotFoundException
	 *             the exemplar not found exception
	 * @throws DataInconsistentException
	 *             the data inconsistent exception
	 * @throws NotLoanedException
	 *             the not loaned exception
	 */
	public abstract void extend(int exemplarID) throws RemoteException,
			LoanExtendNotPossibleException, DatabaseException,
			LoanNotFoundException, ExtendNotAllowedException,
			ExemplarNotFoundException, DataInconsistentException,
			NotLoanedException;

}